package Algorithm;

public class Num977 {

    //双指针法
    public int[] sortedSquares(int[] nums) {
        int p=-1;
        for(int i=0;i<nums.length;i++){
            if(nums[i]<0) p=i;
            else break;
        }
        int[] arr=new int[nums.length];
        int index=0,i=p,j=p+1;
        while(i>=0 || j<nums.length){
            if(i<0){
                arr[index]=nums[j]*nums[j];
                ++j;
            }else if(j==nums.length){
                arr[index]=nums[i]*nums[i];
                --i;
            }else if(nums[i]*nums[i]<nums[j]*nums[j]){
                arr[index]=nums[i]*nums[i];
                --i;
            }else{
                arr[index]=nums[j]*nums[j];
                ++j;
            }
            ++index;
        }
        return arr;
    }
    //暴力法
//    public int[] sortedSquares(int[] nums) {
//        if(nums.length==0) return new int[0];
//        int[] arr=new int[nums.length];
//        int i=0;
//        int j=nums.length-1;
//        while(i<=j){
//            arr[i]=nums[i]*nums[i];
//            arr[j]=nums[j]*nums[j];
//            i++;
//            j--;
//        }
//        Arrays.sort(arr);
//        return arr;
//    }
}
